Processors execute programs that include multiple instructions. These instructions may be stored in volatile memory modules or in non-volatile memory modules. When these instructions are stored in a volatile memory module software breakpoints can be easily inserted to the program. When the instructions are stored in a non-volatile memory module it is very hard to insert software breakpoints into the program.
One common method of debugging instructions that are stored in a non-volatile memory module is known as stepping and involves executing one instruction at a time and stopping the execution process after the execution of each instruction in order to obtain debug information and process it. Stepping is time consuming and dramatically slows the debugging process.